package com.datatraffic.services;

import org.json.JSONArray;
import org.json.JSONObject;

import com.datatraffic.salesup.ConsumidorServicios;

import android.content.Context;
import android.os.AsyncTask;
import android.text.TextUtils.StringSplitter;
import android.util.Log;
import android.widget.Toast;

public class ManagerExecutor extends AsyncTask<JSONObject,Void,JSONObject> {

	private ConsumidorServicios actividad;
	private JSONObject recibido;
	private JSONObject resultado;
	private Context contexto;
	private FormsManager manager;
	
	public ManagerExecutor(ConsumidorServicios actividad, Context contexto)
	{
		this.actividad = actividad;
		this.recibido = null;
		this.resultado = null;
		this.contexto = contexto;
		this.manager = new FormsManager(this.contexto);
	}
	
	@Override
	protected JSONObject doInBackground(JSONObject... params) {
		Log.i ("Total jsons: ", String.valueOf(params.length));
		
		if(params.length == 1)
		{
			this.recibido = params[0];
			Log.i ("Contenido json: ", recibido.toString());
			try {
				String function= recibido.getString("function");

				Log.i ("Function: ", function);
				
				if(function.equals("registerForm"))
				{
					try {
						this.resultado = this.manager.crearFormulario(this.recibido);
						Log.i ("Function: ", this.resultado.toString());
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
				else if(function.equals("updateForm"))
				{
					try {
						this.resultado = this.manager.editarFormulario(this.recibido);
						Log.i ("Function: ", this.resultado.toString());
					
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
				else if(function.equals("selectForm"))
				{
					try {
						this.resultado = this.manager.consultarFormulario(this.recibido);
						Log.i ("Function: ", this.resultado.toString());
					
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}
				else if(function.equals("listaform"))
				{
					try {
						this.resultado = this.manager.cargarlista(this.recibido);						
						Log.i ("Function: ", this.resultado.toString());
					
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}
				else if(function.equals("selectList"))
				{
					try {
						this.resultado = this.manager.consultarLista(this.recibido);
						Log.i ("Function: ", this.resultado.toString());
						
					
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}
				else if(function.equals("sincronizar"))
				{
					try {
						this.manager.sincronizar();
					
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}
				else if(function.equals("login"))
				{
					try {
						this.resultado = this.manager.login(this.recibido);
						
						Log.i ("Function: ", this.resultado.toString());
						
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}
				else if(function.equals("getStatiscsByDate"))
				{
					try {
						this.resultado = this.manager.estadisticasPorFechas(this.recibido);
						
						Log.i ("Function: ", this.resultado.toString());
					
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}
				else if(function.equals("getStatiscsByHour"))
				{
					try {
						this.resultado = this.manager.estadisticasPorFechas(this.recibido);
						
						Log.i ("Function: ", this.resultado.toString());
					
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}
				else if(function.equals("numForms"))
				{
					try {
						this.resultado = this.manager.numFormularios(this.recibido);
								
						Log.i ("Function: ", this.resultado.toString());
					
					} catch (Exception e) {
						e.printStackTrace();
					}					
				}
				
				else if(function.equals("AutocompletarNombres"))
				{
					try {
						
						this.resultado = this.manager.consultarnombre(this.recibido);
						
						Log.i ("Function: ", this.resultado.toString());
						
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
				
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
		
		return resultado;
	}
	
	@Override
	protected void onPostExecute(JSONObject params) {
		Log.i ("Desde: ", "onPostExecute");
		actividad.procesarRespuesta(this.resultado);
	}
	
}
